// 视频处理辅助工具
import { getFullUrl } from './url-helper.js'

/**
 * 获取完整的视频URL
 * @param {string} path - 视频路径
 * @returns {string} 完整的视频URL
 */
export function getVideoUrl(path) {
  return getFullUrl(path);
}

/**
 * 检查视频URL是否可访问
 * @param {string} url - 视频URL
 * @returns {Promise<boolean>} 是否可访问
 */
export function checkVideoAccess(url) {
  return new Promise((resolve) => {
    uni.request({
      url: url,
      method: 'HEAD',
      success: (res) => {
        console.log('视频访问检查成功:', res);
        resolve(true);
      },
      fail: (err) => {
        console.warn('视频访问检查失败:', err);
        resolve(false);
      }
    });
  });
}

/**
 * 获取视频信息
 * @param {string} url - 视频URL
 * @returns {Promise<Object>} 视频信息
 */
export function getVideoInfo(url) {
  return new Promise((resolve, reject) => {
    // 创建临时video元素获取视频信息
    const video = uni.createVideoContext('temp-video');
    
    // 这里需要根据实际平台调整
    // 微信小程序可能需要使用wx.getVideoInfo
    if (typeof wx !== 'undefined' && wx.getVideoInfo) {
      wx.getVideoInfo({
        src: url,
        success: (res) => {
          console.log('视频信息获取成功:', res);
          resolve(res);
        },
        fail: (err) => {
          console.warn('视频信息获取失败:', err);
          reject(err);
        }
      });
    } else {
      // 其他平台的处理方式
      resolve({});
    }
  });
}

/**
 * 处理视频加载错误
 * @param {Object} error - 错误信息
 * @param {Object} banner - banner信息
 * @returns {Object} 处理结果
 */
export function handleVideoError(error, banner) {
  console.warn('视频加载错误处理:', {
    error: error,
    banner: banner,
    url: banner ? getVideoUrl(banner.imageUrl) : ''
  });
  
  return {
    success: false,
    error: error,
    fallbackUrl: '/static/images/default-video.png',
    message: '视频加载失败，请检查网络连接或联系管理员'
  };
}

/**
 * 预加载视频
 * @param {Array} videoUrls - 视频URL数组
 * @returns {Promise<Array>} 预加载结果
 */
export function preloadVideos(videoUrls) {
  const promises = videoUrls.map(url => checkVideoAccess(url));
  return Promise.allSettled(promises);
}

/**
 * 格式化视频时长
 * @param {number} duration - 视频时长（秒）
 * @returns {string} 格式化后的时长
 */
export function formatVideoDuration(duration) {
  if (!duration || duration <= 0) return '00:00';
  
  const minutes = Math.floor(duration / 60);
  const seconds = Math.floor(duration % 60);
  
  return `${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`;
}

/**
 * 检查视频格式是否支持
 * @param {string} url - 视频URL
 * @returns {boolean} 是否支持
 */
export function isVideoFormatSupported(url) {
  const supportedFormats = ['.mp4', '.mov', '.avi', '.wmv', '.flv', '.webm'];
  const extension = url.toLowerCase().split('.').pop();
  
  return supportedFormats.some(format => format.includes(extension));
} 